package com.qf.filters;

import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import com.netflix.zuul.exception.ZuulException;
import org.apache.http.protocol.RequestContent;
import org.springframework.cloud.netflix.zuul.filters.support.FilterConstants;
import org.springframework.stereotype.Component;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

@Component
public class MyPreFilter02 extends ZuulFilter {

//    过滤器类型
    @Override
    public String filterType() {
//        前置
        return FilterConstants.PRE_TYPE;
    }
//      过滤器顺序
//    自定义设置的过滤器 做好 大于5
    @Override
    public int filterOrder() {
        return 10;
    }

// 是否执行当前方法
    @Override
    public boolean shouldFilter() {

//        要是能知道当前拦截了 是不是直接返回false
//        RequestContext context = RequestContext.getCurrentContext();

//        return context.sendZuulResponse();
        return true;
    }

//    要执行的方法
    @Override
    public Object run() throws ZuulException {
        System.out.println("MyPreFilter02 执行了");

        RequestContext context = RequestContext.getCurrentContext();
        context.set("age", 18);
        context.set("name", "wangwu");

//        把请求转发到别的 路径  使用这个转发 过滤器 优先级必须大于6
//        重新设置要访问的ID
        context.put(FilterConstants.SERVICE_ID_KEY,"13categoryconsumer-eureka-ribbon-openfeign2-hystrix");
//      重新设置要访问的路径   参数和页面一样
        context.put(FilterConstants.REQUEST_URI_KEY, "/books/test4");

        return null;
    }
}
